package com.kotlin.flong.flow

import kotlinx.coroutines.flow.asFlow
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.runBlocking

/**
 * @Author:liangjl
 * @Date: 2020/7/10-21:07
 * @Eamil:jilongliang@sina.com
 * @Description:
 * Flow Builder 流的构建器
 * 1、flow是最经常被使用的一种构建器
 * 2、flowOf构建器可用于定义能够发射固定数量值的流
 * 3、对于各种集合与序列来说，他们都提供了asFlow()扩展方法来将自身转换成flow
 * 4、import kotlinx.coroutines.flow.internal.unsafeFlow as flow 这行代码 flow是unsafeFlow的别名
 * 5、inline 、noinine 、crossinline 、
 * 6、non-local returns： 非局部返回，实际上表示的是在在一个内部，我们可以在其中通过一个lambda表达式的返回来直接将外层方法返回
 * 7、crossinline的作用实际上就是表示被标记的lambda表达式是不允许非局部返回的
 */
fun main() = runBlocking {
    (1..10).asFlow().collect { println(it) }


    println("******************")


    flowOf(10,20,30,40,50).collect { println(it) }

}